package br.senai.sc.controller;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.senai.sc.dao.GenericDAOImp;
import br.senai.sc.entity.Usuario;
import br.senai.sc.util.SessionObjectDestroyer;
import br.senai.sc.util.StringToMD5;

@ManagedBean
@SessionScoped
public class LoginController implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6157563727846787325L;
	private Usuario usuario;
	private Boolean logado;
	private GenericDAOImp<?, ?> dao;

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Boolean getLogado() {
		return logado;
	}

	public void setLogado(Boolean logado) {
		this.logado = logado;
	}

	public LoginController() {
		this.usuario = new Usuario();
		this.logado = false;
		;
		this.dao = new GenericDAOImp<>();
	}

	public void login(ActionEvent e) {
		Usuario aux;
		aux = dao
				.listByProperty(Usuario.class, "usuario", usuario.getUsuario());
		if (aux != null
				&& aux.getSenha().equals(
						StringToMD5.convertStringToMD5(usuario.getSenha()))) {
			logado = true;
			usuario = aux;

		} else {
			usuario = new Usuario();
			FacesContext.getCurrentInstance().addMessage(
					"Usuário/Senha incorreto(s)",
					new FacesMessage(FacesMessage.SEVERITY_ERROR,
							"Usuário/Senha incorreto(s)",
							"Usuário/Senha incorreto(s)"));
		}

	}

	public String logar() {
		return "/index";
	}

	public String logout() {
		SessionObjectDestroyer.destroy();
		FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
				.remove("loginController");
		this.usuario = new Usuario();
		this.logado = false;
		return "/index?faces-redirect=true";
	}
}
